const filterQuery = (query) => {
    let params = {}
    let pages = {}
    for (const key in query) {
        if (["limit", "size", "total"].includes(key)) {
            pages[key] = query[key]
        } else {
            params[key] = query[key]
        }
    }
    return {
        pages,
        params
    }
}
const getNowTime = () => {
    let date = new Date()
    var y = date.getFullYear() // 年
    var m = date.getMonth() + 1; // 月
    var d = date.getDate(); // 日
    var h = date.getHours(); // 时
    var mi = date.getMinutes(); // 分
    var s = date.getSeconds() //秒
    return `${y}-${m <= 9 ? '0' + m : m}-${d <= 9 ? '0' + d : d} ${h <= 9 ? '0' + h : h}:${mi <= 9 ? '0' + mi : mi}:${s <= 9 ? '0' + s : s}`
}
// 平级转树解构
const listToTree = (arr) => {
    //先检测是不是数组类型
    if (!Array.isArray(arr)) {
        return [];
    }
    // JS的对象就是hash表
    const obj = {};
    arr.forEach((item) => {
        obj[item._id] = item;
    });
    const targetArr = [];
    arr.forEach((item) => {
        const parent = obj[item.parentid];//有pId就说明他有父亲，找到他的父亲parent
        if (parent) {  //如果他有父亲，就给他添加children属性
            parent.children = parent.children || [];
            parent.children.push(item);
        } else {  //他没有父亲，就把当前项push进去（顶层）
            targetArr.push(item);
        }
    });
    return targetArr;
}
// 树结构转平级
const treeToList = (tree, data = []) => {
    for (let i = 0; i < tree.length; i++) {
        const item = tree[i];
        if (item.children) {
            treeToList(item.children, data)
        }
        delete item.children
        data.push(item)
    }
    return data
}
const handleReg =(query,arr) => {
    // 循环处理函数值查询；返回查询对象
    const params = {}
    arr.forEach(key => {
        // 如果请求体为空值的时候则不加入判断 
        if (!query[key] || query[key] === "") return
          // 对boolean不校验
        if (typeof query[key] === 'boolean' || ['true','false'].includes(query[key])) {
            // 将字符串转化为布尔值
            params[key] = JSON.parse(query[key])
        } else {
            params[key] = new RegExp(query[key], 'i')
        }
      
    });
    return params
}
const tools = {
    // 抽离参数中的分页参数
    filterQuery: filterQuery,
    // 获取当前时间
    getNowTime: getNowTime,
    // 平级转树结构
    listToTree: listToTree,
    // 树结构转平级
    treeToList: treeToList,
    // 模糊查询参数过滤
    handleReg:handleReg

}
module.exports = tools